A virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own software (OS) and software applications (processes). A host machine (e.g., computer or server) is typically enabled to simultaneously run multiple VMs, where each VM may be used by a local or remote client.
Within the host machine, a hypervisor manages allocation and virtualization of computer resources for the VMs and performs context switching, as may be necessary, to cycle between various VMs. The hypervisor allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including softwares known as guest softwares. The hypervisor virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest software or the remote client that uses the VM.
Frequently, some of the VMs managed by a hypervisor do not have an external connection to the outside network, or have its network stack completely disabled. The isolation of the VMs from external public networking is desired for security purposes.
A problem encountered by the lack of connection to the external network by the VMs is updating the guest software. All of the VMs sometimes need to receive software updates from the external network; for example, for urity fixes, standard bug fixes and new features. A VM that is not hooked into external public networking cannot easily enjoy the benefits of receiving software updates from an OS vendor.